在单片机(MCU)上运行Qt?Qt for MCUs 1.0正式发布
【Qt 公司近日宣布了新的工具包:Qt for MCU。】
有感博文
https://blog.qt.io/cn/2018/08/15/qt_on_microcontrollers_mcu/
这篇博文翻译让我有一些启发
之前也一直有疑惑,能否在单片机(MCU)上运行Qt呢?Qt能否不依赖操作系统运行(裸跑)?很早时候,就听说了Qt for MCUs这个项目。看到这篇博文之后也深有体会。
QT在单片机上的运行演示视频
简单介绍这个项目,Qt for MCU 能够在没有操作系统的设备上运行,允许开发人员在具有成本效益的单片机上创建流畅的用户界面,基于 Qt 的应用程序现在可以部署在传统操作系统与基于 ARM Cortex M7 的单片机上。
项目的意义何在
我们都知道,体积小,功耗低加上低成本是单片机的主要特性,PCB Layout复杂度相对于Cortex-A那样级别的MPU来说要低很多,在要求不是特别高的情况下,低廉的价格对批量生产优势明显。而且无论是整个BOM成本还是开发人员的要求MCU都相对要有优势。
Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。它的跨平台特性、五花八门包罗万象的类库(包括图形界面)、丰富的例程以及给力的开源社区配合嵌入式开发是一件创新点高level的事情。
Qt for MCU 是如何实现的呢?
答案是 Qt Quick。Qt Quick是Qt 4.7 中推出的一项新技术。Qt Quick 是一种高级用户界面技术,使用它可轻松地创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。 其核心是 QML,从语法上看,它有一种 JSON 感觉,低开销运行时使 QML GUI 能够与后端 C/C++ 代码绑定,使 GUI 可以跨多个平台进行移植。
Qt for MCU 软件栈如图
通过一个新的 QML 到 C++ 的转换,再加上一个新的声明性属性绑定引擎,在为 MCU 开发任何应用程序的同时,开发人员仍然可以使用他们强大的声明性 UI 语言 QML 和丰富的现成 Qt Quick 控件集来实现功能,没有操作系统的情况下,直接在处理器运行,业界称为“在裸金属上运行”
技术难点
Qt 一直是在x86、A9、Cotex-A 系列运行,那么既然是单片机,暂时来说也是对硬件环境有高要求的。
256 MB 的RAM;
500 MHz CPU (推荐1 GHz);
支持OpenGL ES 2.0.
QT要想跑在MCU上边,还是需要QT团队做大量移植和简化的工作,然后还要移植Qt Core、Qt GUI、Qt Widgets、Qt QML、Qt Quick Controls 2、Qt Network这些模块,以适应MCU的资源环境,QT还需要C++11编译器的支持,Qt内部使用了大量的POSIX接口函数
总的来说,有两个必要条件:
兼容POSIX的操作系统
兼容C++11的编译器
前瞻
经过20年的发展,QT的开发环境也越来越完美了,但是从开发的角度来说,从X86的桌面到Cortex-A的智能终端,并且Qt for MCUs项目之后,现在还加入了MCU的支持,Qt Quick Ultralite负责GUI主机,Qt Core作为MCU逻辑部分的开发,使用上C++优秀的面向对象的语言特性,底层还有个RTEMS开源的实时操作系统,这对开发人员来说,挑战巨大。从文章基于STM32F769 的实验来看,还有很多的任务要做,移植Qt本身表述如下
Qt for MCUs 1.0正式发布
Qt for MCUs的优势
极致性能、极小内存占用是它的优势,在微控制器上打造流畅的用户界面,专注于统一的技术方法,并且可以应用于整个产品线,从而获得一致的品牌用户体验。
类似智能手机的用户体验
跨arm架构重用源代码
使用QML和Qt开发工具进行快速开发
我们来看看整个操作视频
Qt for MCUs是什么?
一个完整的图形框架和工具包,包含在微控制器上设计、开发和部署GUI所需的一切。您可在裸机或实时操作系统上运行您的应用程序。
Qt for MCUs开发工具
对用户说的话
意法半导体微控制器营销总监 Daniel Colonna说到,“在今年的Embedded World上,Qt公司在我们STM32MP1多核微处理器系列上展示了一个令人印象深刻的演示。现在,他们在性能较低的STM32F7系列微控制器上实现的高性能UI正将Qt推向更高的水平,我们相信随着Qt for MCUs的推出,我们的合作将更加丰富,更多客户将从中受益。”
恩智浦半导体低功耗微处理器和微控制器产品线副总裁兼总经理Joe Yu说到,“我们对运行在i.MX RT1050跨界处理器上的基于Qt的绘图性能非常满意。通过利用RT1050图形加速器,Qt能提供60 fps高质量的图形,同时最小化内存的占用。Qt在嵌入式行业被广泛使用,新的产品将使Qt成为更有吸引力的竞争者。”
来源:技术让梦想更伟大